from pathlib import Path  # 引入Path类用于处理文件路径
from matplotlib.pyplot import show  # 引入show函数用于显示绘制的图形

from src.config.config import Config  # 引入配置类Config
from src.config.config_plotting import PlotConfig  # 引入绘图配置类PlotConfig
from src.plotting.plot_error_sweep_testing_graph import plot_error_sweep_testing_graph  # 引入绘图函数

if __name__ == '__main__':

    # 创建配置对象
    cfg = Config()
    plot_cfg = PlotConfig()

    # 定义数据路径列表，包含需要绘制的数据文件路径
    data_paths = [
        Path(cfg.output_metrics_path,
             'sat_2_ant_4_usr_3_satdist_10000_usrdist_1000', 'err_mult_on_steering_cos', 'error_sweep',
             'testing_mmse_sweep_0.0_0.5_userwiggle_30.gzip'),
        Path(cfg.output_metrics_path,
             'sat_2_ant_4_usr_3_satdist_10000_usrdist_1000', 'err_mult_on_steering_cos', 'error_sweep',
             'testing_mrc_sweep_0.0_0.5_userwiggle_30.gzip'),

        Path(cfg.output_metrics_path,
             'sat_2_ant_4_usr_3_satdist_10000_usrdist_1000', 'err_mult_on_steering_cos', 'error_sweep',
             'testing_sac_error_0.0_userwiggle_30_snap_3.580_sweep_0.0_0.5_userwiggle_30.gzip'),
        Path(cfg.output_metrics_path,
             'sat_2_ant_4_usr_3_satdist_10000_usrdist_1000', 'err_mult_on_steering_cos', 'error_sweep',
             'testing_sac_error_0.1_userwiggle_30_snap_3.422_sweep_0.0_0.5_userwiggle_30.gzip'),
    ]

    # 设置图形的宽度和高度
    plot_width = 0.99 * plot_cfg.textwidth  # 图形宽度为plot_cfg.textwidth的99%
    plot_height = plot_width * 12 / 30  # 图形高度按照宽度比例设置

    # 设置图例、标记样式、颜色和线型
    plot_legend = ['MMSE', 'OMA', 'SAC1', 'SAC2']  # 图例标签
    plot_markerstyle = ['o', '^', 's', 'x']  # 标记样式：圆圈、三角形、方形、叉号
    plot_colors = [plot_cfg.cp2['blue'], plot_cfg.cp2['black'], plot_cfg.cp2['magenta'], plot_cfg.cp2['green']]  # 图形颜色
    plot_linestyles = ['-', '--', '-', '-']  # 线型：实线、虚线、实线、实线

    # 调用绘图函数，生成误差扫描测试图
    plot_error_sweep_testing_graph(
        paths=data_paths,  # 数据文件路径
        name='error_sweep_model_1_paper',  # 图形名称
        width=plot_width,  # 图形宽度
        height=plot_height,  # 图形高度
        xlabel='User Position Error Bound \( \Delta\epsilon \)',  # X轴标签
        ylabel='Sum Rate \( \hat{R} \) [bps/Hz]',  # Y轴标签
        legend=plot_legend,  # 图例标签
        colors=plot_colors,  # 图形颜色
        markerstyle=plot_markerstyle,  # 标记样式
        linestyles=plot_linestyles,  # 线型
        plots_parent_path=plot_cfg.plots_parent_path,  # 图形保存路径
    )
    
    show()  # 显示绘制的图形
